package com.cooldatasoft.base;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * 
 * @author fatih mehmet ucar
 *
 * @param <T>
 */
public abstract class RootDAOImpl<T> extends HibernateDaoSupport implements RootDAO<T> {

	private Class clazz;
	
	public RootDAOImpl(Class clazz){
		this.clazz = clazz;
	}
	
	public void delete(T entity) {		
		getHibernateTemplate().delete(entity);
	}

	public T get(Integer id) {
		return (T) getHibernateTemplate().get(clazz,id);
	}

	public List<T> listAll() {
		return getHibernateTemplate().loadAll(clazz);
	}

	public T load(Integer id) {
		return (T) getHibernateTemplate().load(clazz,id);
	}

	public void save(T entity) {
		getHibernateTemplate().save(entity);
	}

	public void saveOrUpdateAll(List<T> entityList) {
		getHibernateTemplate().saveOrUpdateAll(entityList);
	}

	public void saveOrUpdate(T entity) {
		getHibernateTemplate().saveOrUpdate(entity);
	}

	public void update(T entity) {
		getHibernateTemplate().update(entity);
	}

	public List<T> find(String queryString){
		return getHibernateTemplate().find(queryString);
	}
}
